package com.ghxxzx.dagl.utils;

import com.ghxxzx.dagl.entity.Dalx;
import com.ghxxzx.dagl.entity.Daxx;
import com.ghxxzx.dagl.entity.GryfKj;
import com.ghxxzx.dagl.exceptions.JyException;
import com.ghxxzx.dagl.mapper.*;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Component
public class WsFlag {
    @Autowired
    private DalxMapper dalxMapper;
    @Autowired
    private DaxxWsMapper daxxWsMapper;
    @Autowired
    private DaxxMapper daxxMapper;
    @Autowired
    private GryfKjMapper gryfKjMapper;
    @Autowired
    private DaxxWsRgMapper daxxWsRgMapper;
    @Autowired
    private DaxxRgMapper daxxRgMapper;
    @Autowired
    private GryfKjRgMapper gryfKjRgMapper;
//    public boolean getFlag(Integer id) {
//        String code = getPartCode(id);
//        boolean flag = false;
//        if (code.equalsIgnoreCase("WS")) {
//            flag = true;
//        }
//        return flag;
//    }

    public HashMap<Integer, Integer> getDalxFlag() {
        HashMap<Integer, Integer> dalxFlag = new HashMap<>();
        List<Dalx> dalxes = dalxMapper.selectListNoRootandWs();
        ArrayList<Dalx> list = new ArrayList<>();
        for (Dalx dalx : dalxes) {
            if ((!dalx.getDalxName().equalsIgnoreCase("ws"))||(!dalx.getDalxName().equalsIgnoreCase("kj"))){
                list.add(dalx);
            }
        }
        dalxFlag=new HashMap<>();
        for (Dalx dalx : list) {
            Integer lx = getLx(dalx.getId());
            dalxFlag.put(dalx.getId(),lx);
        }
        return dalxFlag;
    }

    public Integer getLx(Integer id) {
        Integer lx=0;
        List<Dalx> dalxes = dalxMapper.selectListNoRootandWs();
        Dalx dalx = dalxMapper.selectById(id);
        if (dalx == null) {
            dalx = new Dalx();
        }
        String s = getgetPartCode2(dalx,dalxes);
        if (s.trim().equalsIgnoreCase("ws")){
            lx=3;
        }else if (s.trim().equalsIgnoreCase("kj")){
            lx=1;
        }else if (s.trim().equalsIgnoreCase("gr")){
            lx=2;
        }
        return lx;
    }

    public String getgetPartCode2(Dalx dalx,List<Dalx> dalxes) {
        if (dalx==null){
            dalx=new Dalx();
        }
//        boolean parentId = getParentFlag(dalx, dalxes);
//        if (parentId){
//            throw new JyException("该节点为超级父节点");
//        }
        Dalx dalx1 = getParentId(dalx, dalxes);
        if (dalx.getCode().trim().equalsIgnoreCase("ws")||dalx.getCode().trim().equalsIgnoreCase("kj")||dalx.getCode().trim().equalsIgnoreCase("gr")) {
            return dalx.getCode();
        }else {
            return getgetPartCode2(dalx1,dalxes);
        }

    }
    public boolean getParentFlag(Dalx dalx,List<Dalx> dalxes){
        boolean flag=true;
        for (Dalx dalx1 : dalxes) {
            if (dalx.getParentId()==null){
                System.out.println(dalx.getParentId());
            }
            if (dalx.getParentId().intValue()==dalx1.getId().intValue()){
                flag=false;
                break;
            }
        }
        return flag;
    }
    public Dalx getParentId(Dalx dalx,List<Dalx> dalxes){
        Dalx dalx2=new Dalx();
        for (Dalx dalx1 : dalxes) {
            if ((dalx.getParentId().intValue())==(dalx1.getId().intValue())){
                dalx2=dalx1;
                break;
            }
        }
        return dalx2;
    }
//    public String getPartCode(Integer id) {
//        Dalx dalx = dalxMapper.selectById(id);
//        if (dalx == null) {
//            dalx = new Dalx();
//        }
//        Dalx select = dalxMapper.selectById(dalx.getParentId());
//        if (select == null) {
//            throw new JyException("该节点为超级父节点");
//        }
//        if (!select.getCode().equalsIgnoreCase("JZ")) {
//            String code = getPartCode(dalx.getParentId());
//            return code;
//        }
//        return dalx.getCode();
//    }

//    已录入
    public Integer getTypeId(String dabh){
        Integer dalxId=0;
        dalxId = daxxWsMapper.findByDanbh(dabh);
        if (dalxId==null){
            dalxId = daxxMapper.findByDanbh(dabh);
            if (dalxId==null){
                dalxId =gryfKjMapper.findByDanbh(dabh);
                if (dalxId==null){
                    dalxId=daxxRgMapper.findByDanbh(dabh);
                    if (dalxId==null){
                        dalxId=daxxWsRgMapper.findByDanbh(dabh);
                        if (dalxId==null){
                            dalxId=gryfKjRgMapper.findByDanbh(dabh);
                            if (dalxId==null){
                                throw new JyException("该档案编号还未录入");
                            }
                        }
                    }
                }
            }
        }
        return dalxId;
    }
////    未录入
//    public Integer getNotAlreadyType(){
//
//    }
}
